package com.yourenbang.lingyun.transaction.mapper;

import com.yourenbang.lingyun.domain.PayTransactionIndex;
import com.yourenbang.lingyun.transaction.web.domain.dto.yxy.TransactionCountYxyDTO;
import com.yourenbang.lingyun.transaction.web.domain.dto.yxy.job.JtProfitDTO;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface TransactionPayTransactionIndexMapper {

    PayTransactionIndex getByOrderNo(@Param("orderNo") String orderNo);

    List<TransactionCountYxyDTO> getTransaction(@Param("startTime") String startTime,
                                                @Param("endTime") String endTime);

    List<TransactionCountYxyDTO> getTransactionJT(@Param("startTime") String startTime,
                                                  @Param("endTime") String endTime);

    /**
     * 根据时间范围 获取基梯机构 交易额和交易笔数
     *
     * @param clientNo  终端号
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 统计结果
     */
    TransactionCountYxyDTO getClientTransactionByTime(@Param("clientNo") String clientNo,
                                                      @Param("startTime") String startTime,
                                                      @Param("endTime") String endTime);


    /**
     * 获取基梯计算分润 需要的交易记录 (排除缴纳押金的部分）
     *
     * @param index    表下标
     * @param month    月份
     * @param agentIds 机构ID
     * @return 交易记录列表
     */
    List<JtProfitDTO> getClientTransactionForProfit(@Param("index") Integer index,
                                                    @Param("month") String month,
                                                    @Param("agentIds") List<String> agentIds);

    List<JtProfitDTO> getClientTransactionForProfitYxy(@Param("index") Integer index,
                                                       @Param("month") String month,
                                                       @Param("agentIds") List<String> agentIds);

    /**
     * 获取基梯计算分润 要用到的 扫码交易额
     */

    BigDecimal getClientScanTotalAmount(@Param("month") String month,
                                        @Param("agentIds") List<String> agentIds);
}